package survivalstagegenerator;

public abstract class Opponent
{
    protected int HPLevel;
    protected int times;
    protected int[] strength;
    protected int[] HP;
    protected int initStrength;
    protected int charID;
    protected boolean isSoldier;
    protected boolean isBoss;
    protected int notAddedProb;
    protected int noHPIncProb;
    protected int bossPhaseNotAddedProb;
    protected int bossPhaseNoHPIncProb;
    protected int noTimesAddedProb;
    
    public Opponent(
    	final int[] HPNumbers,
    	final int[] STRENGTH_NUMBERS,
    	final int CHAR_ID,
    	final int NOT_ADDED_PROB,
    	final int NO_HP_INC_PROB, 
    	final int BOSS_PHASE_NOT_ADDED_PROB, 
    	final int BOSS_PHASE_NO_HP_INC_PROB, 
    	final int NO_TIMES_ADDED_PROB
    ) {
        this.HPLevel = 0;
        this.times = 1;
        this.isSoldier = false;
        this.isBoss = false;
        this.bossPhaseNotAddedProb = 0;
        this.bossPhaseNoHPIncProb = 0;
        this.noTimesAddedProb = 0;
        this.charID = CHAR_ID;
        this.HP = HPNumbers;
        this.strength = STRENGTH_NUMBERS;
        this.initStrength = STRENGTH_NUMBERS[0];
        this.notAddedProb = NOT_ADDED_PROB;
        this.noHPIncProb = NO_HP_INC_PROB;
        this.bossPhaseNotAddedProb = BOSS_PHASE_NOT_ADDED_PROB;
        this.bossPhaseNoHPIncProb = BOSS_PHASE_NO_HP_INC_PROB;
        this.noTimesAddedProb = NO_TIMES_ADDED_PROB;
    }
    
    public Opponent(final int[] HPNumbers, final int[] STRENGTH_NUMBERS, final int CHAR_ID, final int NOT_ADDED_PROB, final int NO_HP_INC_PROB, final int BOSS_PHASE_NOT_ADDED_PROB, final int BOSS_PHASE_NO_HP_INC_PROB) {
        this.HPLevel = 0;
        this.times = 1;
        this.isSoldier = false;
        this.isBoss = false;
        this.bossPhaseNotAddedProb = 0;
        this.bossPhaseNoHPIncProb = 0;
        this.noTimesAddedProb = 0;
        this.charID = CHAR_ID;
        this.HP = HPNumbers;
        this.strength = STRENGTH_NUMBERS;
        this.initStrength = STRENGTH_NUMBERS[0];
        this.notAddedProb = NOT_ADDED_PROB;
        this.noHPIncProb = NO_HP_INC_PROB;
        this.bossPhaseNotAddedProb = BOSS_PHASE_NOT_ADDED_PROB;
        this.bossPhaseNoHPIncProb = BOSS_PHASE_NO_HP_INC_PROB;
    }
    
    public void setHPLevel(final int level) {
        this.HPLevel = level;
    }
    
    public void setTimes(final int times) {
        this.times = times;
    }
    
    public int getHPLevel() {
        return this.HPLevel;
    }
    
    public int[] getHP() {
        return this.HP;
    }
    
    public int getTimes() {
        return this.times;
    }
    
    public int getCharID() {
        return this.charID;
    }
    
    public int getInitStrength() {
        return this.initStrength;
    }
    
    public int getNotAddedProbability() {
        return this.notAddedProb;
    }
    
    public int getNoHPIncProb() {
        return this.noHPIncProb;
    }
    
    public int getBossPhaseNotAddedProb() {
        return this.bossPhaseNotAddedProb;
    }
    
    public int getBossPhaseNoHPIncProb() {
        return this.bossPhaseNoHPIncProb;
    }
    
    public int getNoTimesAddedProb() {
        return this.noTimesAddedProb;
    }
}
